# Model Card တစ်ခု တည်ဆောက်ခြင်း[[building-a-model-card]]

<CourseFloatingBanner
    chapter={4}
    classNames="absolute z-10 right-0 top-0"
/>

Model card ဟာ model repository ထဲက model နဲ့ tokenizer files တွေလောက်ပဲ အရေးကြီးတယ်လို့ ပြောလို့ရပါတယ်။ ဒါဟာ model ရဲ့ ဗဟိုချက်မဖြစ်ပြီး၊ community member တွေက ပြန်လည်အသုံးပြုနိုင်မှု (reusability) ကို သေချာစေကာ၊ ရလဒ်တွေရဲ့ reproducibility ကို အာမခံပေးပြီး၊ အခြား member တွေက ၎င်းတို့ရဲ့ artifacts တွေ တည်ဆောက်နိုင်မယ့် platform တစ်ခုကို ပံ့ပိုးပေးပါတယ်။

training နဲ့ evaluation လုပ်ငန်းစဉ်တွေကို မှတ်တမ်းတင်ထားတာက တခြားသူတွေ model ကနေ ဘာကို မျှော်လင့်နိုင်မလဲဆိုတာ နားလည်အောင် ကူညီပေးပါတယ် — ပြီးတော့ အသုံးပြုခဲ့တဲ့ data၊ preprocessing နဲ့ postprocessing တွေနဲ့ ပတ်သက်တဲ့ လုံလောက်တဲ့ အချက်အလက်တွေကို ပေးခြင်းက model ရဲ့ ကန့်သတ်ချက်တွေ၊ ဘက်လိုက်မှုတွေနဲ့ အသုံးဝင်တဲ့၊ မအသုံးဝင်တဲ့ အခြေအနေတွေကို ဖော်ထုတ်ပြီး နားလည်နိုင်စေဖို့ သေချာစေပါတယ်။

ဒါကြောင့်၊ သင့် model ကို ရှင်းရှင်းလင်းလင်း ဖော်ပြတဲ့ model card တစ်ခု ဖန်တီးတာက အလွန်အရေးကြီးတဲ့ အဆင့်တစ်ခုပါ။ ဒီနေရာမှာ၊ ဒီကိစ္စအတွက် သင့်ကို အကူအညီပေးမယ့် အကြံပြုချက်အချို့ကို ကျွန်တော်တို့ ပေးပါမယ်။ model card ဖန်တီးတာကို သင်အရင်က တွေ့ခဲ့ရတဲ့ *README.md* file (Markdown file) ကနေ လုပ်ဆောင်ပါတယ်။

"model card" သဘောတရားက Google ကနေ သုတေသနလမ်းကြောင်းတစ်ခုကနေ ဆင်းသက်လာတာဖြစ်ပြီး၊ Margaret Mitchell et al. ရေးသားခဲ့တဲ့ ["Model Cards for Model Reporting"](https://arxiv.org/abs/1810.03993) စာတမ်းမှာ ပထမဆုံး မျှဝေခဲ့တာပါ။ ဒီနေရာမှာ ပါဝင်တဲ့ အချက်အလက်အများစုဟာ အဲဒီစာတမ်းပေါ်မှာ အခြေခံထားတာဖြစ်ပြီး၊ reproducibility, reusability နဲ့ fairness ကို တန်ဖိုးထားတဲ့ ကမ္ဘာကြီးမှာ model cards တွေ ဘာကြောင့် ဒီလောက်အရေးကြီးသလဲဆိုတာ နားလည်ဖို့အတွက် အဲဒီစာတမ်းကို လေ့လာကြည့်ဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်။

model card က အများအားဖြင့် model ဟာ ဘာအတွက်လဲဆိုတဲ့ အလွန်တိုတောင်းတဲ့၊ မြင့်မားသောအဆင့် overview နဲ့ စတင်ပြီး၊ အောက်ပါအပိုင်းတွေမှာ ထပ်ဆောင်းအသေးစိတ်အချက်အလက်တွေ ပါဝင်ပါတယ်။

- Model ဖော်ပြချက် (Model description)
- ရည်ရွယ်အသုံးပြုပုံများနှင့် ကန့်သတ်ချက်များ (Intended uses & limitations)
- အသုံးပြုပုံ (How to use)
- ကန့်သတ်ချက်များနှင့် ဘက်လိုက်မှုများ (Limitations and bias)
- Training data
- Training လုပ်ငန်းစဉ် (Training procedure)
- Evaluation ရလဒ်များ (Evaluation results)

ဒီအပိုင်းတစ်ခုစီမှာ ဘာတွေပါဝင်သင့်လဲဆိုတာ ကြည့်ရအောင်။

### Model ဖော်ပြချက်[[model-description]]

Model ဖော်ပြချက်က model နဲ့ပတ်သက်တဲ့ အခြေခံအသေးစိတ်အချက်အလက်တွေကို ပေးပါတယ်။ ဒါတွေမှာ architecture၊ version၊ စာတမ်းတစ်ခုမှာ မိတ်ဆက်ခဲ့ခြင်းရှိမရှိ၊ မူရင်း implementation ရနိုင်ခြင်းရှိမရှိ၊ စာရေးဆရာနဲ့ model အကြောင်း အထွေထွေအချက်အလက်တွေ ပါဝင်ပါတယ်။ မည်သည့် copyright ကိုမဆို ဒီနေရာမှာ ဖော်ပြသင့်ပါတယ်။ training လုပ်ငန်းစဉ်တွေ၊ parameters တွေနဲ့ အရေးကြီးတဲ့ ငြင်းဆိုချက်တွေအကြောင်း အထွေထွေအချက်အလက်တွေကိုလည်း ဒီအပိုင်းမှာ ဖော်ပြနိုင်ပါတယ်။

### ရည်ရွယ်အသုံးပြုပုံများနှင့် ကန့်သတ်ချက်များ[[intended-uses-limitations]]

ဒီနေရာမှာ model ကို ဘယ်လိုအခြေအနေမျိုးမှာ အသုံးပြုဖို့ ရည်ရွယ်ထားသလဲဆိုတာကို ဖော်ပြရပါမယ်။ ဘယ်ဘာသာစကားတွေ၊ နယ်ပယ်တွေနဲ့ domains တွေမှာ အသုံးချနိုင်တယ်ဆိုတာလည်း ပါဝင်ပါတယ်။ model အတွက် အသုံးမဝင်တဲ့ ဒါမှမဟုတ် စွမ်းဆောင်ရည် နည်းပါးနိုင်တဲ့ အပိုင်းတွေကိုလည်း model card ရဲ့ ဒီအပိုင်းမှာ မှတ်တမ်းတင်နိုင်ပါတယ်။

### အသုံးပြုပုံ[[how-to-use]]

ဒီအပိုင်းမှာ model ကို ဘယ်လိုအသုံးပြုရမယ်ဆိုတဲ့ ဥပမာအချို့ကို ထည့်သွင်းသင့်ပါတယ်။ ဒါတွေက `pipeline()` function အသုံးပြုပုံ၊ model နဲ့ tokenizer classes တွေ အသုံးပြုပုံ၊ ပြီးတော့ အထောက်အကူဖြစ်နိုင်တယ်လို့ သင်ထင်တဲ့ အခြား code တွေလည်း ဖြစ်နိုင်ပါတယ်။

### Training data[[training-data]]

ဒီအပိုင်းက model ကို ဘယ် dataset(s) တွေနဲ့ train လုပ်ခဲ့တယ်ဆိုတာကို ဖော်ပြသင့်ပါတယ်။ dataset(s) အကြောင်း အတိုချုံး ဖော်ပြချက်ကိုလည်း ကြိုဆိုပါတယ်။

### Training လုပ်ငန်းစဉ်[[training-procedure]]

ဒီအပိုင်းမှာ training ရဲ့ သက်ဆိုင်ရာ ကဏ္ဍအားလုံးကို reproducibility ရှုထောင့်ကနေ အသုံးဝင်အောင် ဖော်ပြသင့်ပါတယ်။ ဒါတွေမှာ data ပေါ်မှာ လုပ်ခဲ့တဲ့ preprocessing နဲ့ postprocessing တွေအပြင်၊ model ကို train လုပ်ခဲ့တဲ့ epochs အရေအတွက်၊ batch size၊ learning rate စတဲ့ အသေးစိတ်အချက်အလက်တွေ ပါဝင်ပါတယ်။

### Variables နှင့် Metrics[[variable-and-metrics]]

ဒီနေရာမှာ သင် evaluation အတွက် အသုံးပြုတဲ့ metrics တွေနဲ့ သင်တိုင်းတာနေတဲ့ ကွဲပြားခြားနားတဲ့ factors တွေကို ဖော်ပြသင့်ပါတယ်။ ဘယ် metric(s) တွေကို အသုံးပြုခဲ့လဲ၊ ဘယ် dataset နဲ့ ဘယ် dataset split ပေါ်မှာလဲဆိုတာ ဖော်ပြခြင်းက သင့် model ရဲ့ စွမ်းဆောင်ရည်ကို အခြား models တွေနဲ့ နှိုင်းယှဉ်ဖို့ လွယ်ကူစေပါတယ်။ ဒါတွေက ရည်ရွယ်ထားတဲ့ အသုံးပြုသူတွေနဲ့ use cases တွေလို ယခင်အပိုင်းတွေကနေ အချက်အလက်ယူထားသင့်ပါတယ်။

### Evaluation ရလဒ်များ[[evaluation-results]]

နောက်ဆုံးအနေနဲ့၊ evaluation dataset ပေါ်မှာ model က ဘယ်လောက်ကောင်းကောင်း စွမ်းဆောင်နိုင်တယ်ဆိုတာကို ဖော်ပြပါ။ အကယ်၍ model က decision threshold တစ်ခုကို အသုံးပြုတယ်ဆိုရင်၊ evaluation မှာ အသုံးပြုခဲ့တဲ့ decision threshold ကို ဖော်ပြပါ ဒါမှမဟုတ် ရည်ရွယ်ထားတဲ့ အသုံးပြုမှုများအတွက် မတူညီတဲ့ thresholds တွေမှာ evaluation နဲ့ ပတ်သက်တဲ့ အသေးစိတ်အချက်အလက်တွေကို ပေးပါ။

## ဥပမာ[[example]]

ကောင်းမွန်စွာ ရေးသားထားတဲ့ model cards အချို့ရဲ့ ဥပမာတွေကို အောက်မှာ ကြည့်ရှုနိုင်ပါတယ်။ 

- [`bert-base-cased`](https://huggingface.co/bert-base-cased)
- [`gpt2`](https://huggingface.co/gpt2)
- [`distilbert`](https://huggingface.co/distilbert-base-uncased)

မတူညီတဲ့ အဖွဲ့အစည်းတွေနဲ့ ကုမ္ပဏီတွေက နောက်ထပ်ဥပမာတွေကို [ဒီနေရာမှာ](https://github.com/huggingface/model_card/blob/master/examples.md) ရရှိနိုင်ပါတယ်။

## မှတ်ချက်[[note]]

Model cards တွေဟာ models တွေကို publish လုပ်တဲ့အခါ လိုအပ်ချက်တစ်ခု မဟုတ်ပါဘူး၊ ပြီးတော့ သင်တစ်ခု ဖန်တီးတဲ့အခါ အထက်မှာ ဖော်ပြထားတဲ့ အပိုင်းအားလုံးကို ထည့်သွင်းဖို့ မလိုအပ်ပါဘူး။ သို့သော်လည်း၊ model ရဲ့ ရှင်းလင်းပြတ်သားတဲ့ မှတ်တမ်းတင်ခြင်းက အနာဂတ်အသုံးပြုသူတွေကိုသာ အကျိုးပြုမှာဖြစ်တဲ့အတွက်၊ သင်သိသလောက်နဲ့ တတ်နိုင်သမျှ အပိုင်းများစွာကို ဖြည့်စွက်ဖို့ ကျွန်တော်တို့ အကြံပြုပါတယ်။

## Model Card Metadata[[model-card-metadata]]

သင် Hugging Face Hub ကို အနည်းငယ်လေ့လာကြည့်ဖူးတယ်ဆိုရင်၊ တချို့ models တွေက သတ်မှတ်ထားတဲ့ categories တွေထဲမှာ ပါဝင်တာကို သင်တွေ့ဖူးပါလိမ့်မယ်- သင် ဒါတွေကို tasks တွေ၊ languages တွေ၊ libraries တွေနဲ့ အခြားအရာတွေနဲ့ filter လုပ်နိုင်ပါတယ်။ model တစ်ခု ပါဝင်တဲ့ categories တွေကို model card header ထဲမှာ သင်ထည့်တဲ့ metadata နဲ့ ခွဲခြားသတ်မှတ်ပါတယ်။

ဥပမာအားဖြင့်၊ သင် [`camembert-base` model card](https://huggingface.co/camembert-base/blob/main/README.md) ကို ကြည့်လိုက်မယ်ဆိုရင်၊ model card header ထဲမှာ အောက်ပါစာကြောင်းတွေကို သင်တွေ့ရပါလိမ့်မယ်။

```
---
language: fr
license: mit
datasets:
- oscar
---
```

ဒီ metadata ကို Hugging Face Hub က parse လုပ်ပြီး၊ အဲဒီ model ကို French model အဖြစ်၊ MIT license နဲ့၊ Oscar dataset ပေါ်မှာ train လုပ်ထားတဲ့ model အဖြစ် ခွဲခြားသတ်မှတ်ပါတယ်။

[Full model card specification](https://github.com/huggingface/hub-docs/blame/main/modelcard.md) က languages၊ licenses၊ tags၊ datasets၊ metrics တွေအပြင် model train လုပ်စဉ်က ရရှိခဲ့တဲ့ evaluation results တွေကိုပါ သတ်မှတ်ခွင့်ပြုပါတယ်။

## ဝေါဟာရ ရှင်းလင်းချက် (Glossary)

*   **Model Card**: Hugging Face Hub တွင် မော်ဒယ်တစ်ခုစီအတွက် ပါရှိသော အချက်အလက်များပါသည့် စာမျက်နှာ။ ၎င်းတွင် မော်ဒယ်ကို မည်သို့လေ့ကျင့်ခဲ့သည်၊ မည်သည့် datasets များကို အသုံးပြုခဲ့သည်၊ ၎င်း၏ ကန့်သတ်ချက်များ၊ ဘက်လိုက်မှုများ (biases) နှင့် အသုံးပြုနည်းများ ပါဝင်သည်။
*   **Model Repository**: Git version control system ကို အသုံးပြု၍ model file များ၊ tokenizer file များ၊ model card (README.md) နှင့် အခြားဆက်စပ်ဖိုင်များကို သိမ်းဆည်းထားသော နေရာ။
*   **Tokenizer Files**: tokenizer ကို ပြန်လည်တည်ဆောက်ရန် လိုအပ်သော configuration နှင့် vocabulary files များ။
*   **Community Members**: Hugging Face ပလက်ဖောင်းကို အသုံးပြုပြီး ပံ့ပိုးကူညီနေသော လူပုဂ္ဂိုလ်များ။
*   **Reproducibility**: သတ်မှတ်ထားသော code နှင့် data ကို အသုံးပြု၍ တူညီသော ရလဒ်များကို ပြန်လည်ထုတ်လုပ်နိုင်ခြင်း။
*   **Reusability**: ဆော့ဖ်ဝဲလ်အစိတ်အပိုင်းများ သို့မဟုတ် မော်ဒယ်များကို အခြား project များတွင် ပြန်လည်အသုံးပြုနိုင်ခြင်း။
*   **Artifacts**: Machine Learning project တစ်ခုတွင် ဖန်တီးထားသော အရာများ (ဥပမာ- trained models, datasets, code)။
*   **Training Process**: Model ကို ဒေတာများဖြင့် လေ့ကျင့်ပေးသည့် လုပ်ငန်းစဉ်။
*   **Evaluation Process**: Model ၏ စွမ်းဆောင်ရည်ကို တိုင်းတာသည့် လုပ်ငန်းစဉ်။
*   **Data**: Model ကို လေ့ကျင့်ရန်နှင့် အကဲဖြတ်ရန် အသုံးပြုသော အချက်အလက်များ။
*   **Preprocessing**: ဒေတာများကို model က နားလည်ပြီး လုပ်ဆောင်နိုင်တဲ့ ပုံစံအဖြစ် ပြောင်းလဲပြင်ဆင်ခြင်း လုပ်ငန်းစဉ်။
*   **Postprocessing**: Model ၏ output များကို နောက်ဆုံးအသုံးပြုမှုအတွက် ပြင်ဆင်ခြင်း လုပ်ငန်းစဉ်။
*   **Limitations**: Model တစ်ခု၏ ကန့်သတ်ချက်များ သို့မဟုတ် အားနည်းချက်များ။
*   **Biases**: Model တစ်ခု၏ ခန့်မှန်းချက်များတွင် ဒေတာ သို့မဟုတ် သင်္ချာဆိုင်ရာ အကြောင်းများကြောင့် ဖြစ်ပေါ်လာသော ဘက်လိုက်မှုများ။
*   **Contexts**: Model ကို အသုံးပြုသည့် အခြေအနေများ သို့မဟုတ် ပတ်ဝန်းကျင်။
*   **`README.md`**: Markdown format ဖြင့် ရေးသားထားသော project ၏ အဓိက မှတ်တမ်းဖိုင်။
*   **Markdown File**: Plain text format တစ်ခုဖြစ်ပြီး formatting syntax ကို အသုံးပြု၍ စာသားကို ပုံစံချခြင်း။
*   **Model Cards for Model Reporting (Paper)**: Margaret Mitchell et al. မှ ရေးသားခဲ့သော research paper တစ်ခုဖြစ်ပြီး model cards ၏ အရေးပါမှုကို ဖော်ပြသည်။
*   **Fairness**: AI စနစ်များက အဖွဲ့အစည်းများ သို့မဟုတ် တစ်ဦးချင်းအပေါ် ဘက်လိုက်မှုမရှိဘဲ တန်းတူညီမျှစွာ ဆက်ဆံခြင်း။
*   **High-level Overview**: ရှုပ်ထွေးသောအသေးစိတ်အချက်အလက်များမပါဘဲ အဓိကအချက်များကိုသာ အကျဉ်းချုပ်ဖော်ပြခြင်း။
*   **Model Description**: Model ၏ အခြေခံအချက်အလက်များ (architecture, version, author, general info)။
*   **Architecture**: Model တစ်ခု၏ layers များနှင့် ၎င်းတို့ ချိတ်ဆက်ပုံကို ဖော်ပြသော ဒီဇိုင်းဖွဲ့စည်းပုံ။
*   **Version**: ဆော့ဖ်ဝဲလ် သို့မဟုတ် model တစ်ခု၏ သီးခြားထုတ်ပြန်မှု။
*   **Original Implementation**: Model ကို ပထမဆုံးအကြိမ် အကောင်အထည်ဖော်ခဲ့သော code။
*   **Author**: Model ကို ဖန်တီးသူ။
*   **Copyright**: ဥပဒေအရ အကာအကွယ်ပေးထားသော ပုံနှိပ်ထုတ်ဝေခြင်း သို့မဟုတ် ဖန်တီးမှုဆိုင်ရာ အခွင့်အရေး။
*   **Parameters**: Model ၏ လုပ်ဆောင်ချက်ကို သတ်မှတ်ပေးသော အတွင်းပိုင်းတန်ဖိုးများ။
*   **Disclaimers**: တာဝန်ယူမှု ကန့်သတ်ချက်များကို ဖော်ပြသော ထုတ်ပြန်ချက်များ။
*   **Intended Uses**: Model ကို အသုံးပြုရန် ရည်ရွယ်ထားသော ကိစ္စရပ်များ။
*   **Domains**: သီးခြားနယ်ပယ်များ (ဥပမာ- medical domain, legal domain)။
*   **Out of Scope**: Model ၏ စွမ်းဆောင်နိုင်မှုနယ်ပယ်ပြင်ပ။
*   **Suboptimally**: အကောင်းဆုံးမဟုတ်ဘဲ စွမ်းဆောင်ရည် နည်းပါးစွာ လုပ်ဆောင်ခြင်း။
*   **`pipeline()` Function**: Hugging Face Transformers library မှာ ပါဝင်တဲ့ လုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီး မော်ဒယ်တွေကို သီးခြားလုပ်ငန်းတာဝန်များ (ဥပမာ- စာသားခွဲခြားသတ်မှတ်ခြင်း၊ စာသားထုတ်လုပ်ခြင်း) အတွက် အသုံးပြုရလွယ်ကူအောင် ပြုလုပ်ပေးပါတယ်။
*   **Tokenizer Classes**: tokenizer ကို အသုံးပြုရန်အတွက် class များ။
*   **Dataset(s)**: Model ကို လေ့ကျင့်ရန် အသုံးပြုသော ဒေတာအစုအဝေး(များ)။
*   **Number of Epochs**: Model ကို training dataset တစ်ခုလုံးဖြင့် လေ့ကျင့်သည့် အကြိမ်အရေအတွက်။
*   **Batch Size**: training လုပ်ငန်းစဉ်တစ်ခုစီတွင် model သို့ ပေးပို့သော input samples အရေအတွက်။
*   **Learning Rate**: training လုပ်ငန်းစဉ်အတွင်း model ၏ weights များကို မည်မျှပြောင်းလဲရမည်ကို ထိန်းချုပ်သော parameter။
*   **Variables**: တိုင်းတာရန်အတွက် အသုံးပြုသော အချက်အလက်များ။
*   **Metrics**: Model ၏ စွမ်းဆောင်ရည်ကို တိုင်းတာရန် အသုံးပြုသော တန်ဖိုးများ (ဥပမာ- accuracy, F1 score)။
*   **Evaluation Dataset**: Model ၏ စွမ်းဆောင်ရည်ကို အကဲဖြတ်ရန် အသုံးပြုသော dataset အပိုင်း။
*   **Decision Threshold**: classification model ၏ output ကို အခြေခံပြီး အမျိုးအစားတစ်ခုကို ဆုံးဖြတ်ရန် အသုံးပြုသော တန်ဖိုး။
*   **Metadata**: data အကြောင်း အချက်အလက်များ (data about data)။
*   **Model Card Header**: Markdown file (README.md) ၏ အပေါ်ပိုင်းတွင် YAML format ဖြင့် ရေးသားထားသော model ၏ အချက်အလက်များ။
*   **`camembert-base` Model Card**: `camembert-base` model နှင့် ပတ်သက်သော အချက်အလက်များ ပါဝင်သည့် model card။
*   **`language: fr`**: Model ၏ ဘာသာစကားသည် ပြင်သစ် (French) ဖြစ်ကြောင်း ဖော်ပြသော metadata။
*   **`license: mit`**: Model ၏ license အမျိုးအစားသည် MIT ဖြစ်ကြောင်း ဖော်ပြသော metadata။
*   **`datasets: - oscar`**: Model ကို Oscar dataset ပေါ်တွင် လေ့ကျင့်ခဲ့ကြောင်း ဖော်ပြသော metadata။
*   **Parsed**: အချက်အလက်များကို ခွဲခြမ်းစိတ်ဖြာပြီး အဓိပ္ပာယ်ဖော်ခြင်း။
*   **MIT License**: Open-source license တစ်မျိုးဖြစ်ပြီး software ကို လွတ်လပ်စွာ အသုံးပြု၊ ပြင်ဆင်၊ ဖြန့်ဝေနိုင်စေသည်။
*   **Oscar Dataset**: Large-scale multilingual corpus (ဘာသာစကားမျိုးစုံပါဝင်သော စာသားအစုအဝေး)။
*   **Tags**: Model ကို ဖော်ပြရန် သို့မဟုတ် ခွဲခြားသတ်မှတ်ရန် အသုံးပြုသော keyword များ။